package br.com.delogic.simuladorbancario.main.business;

import br.com.delogic.simuladorbancario.main.model.Agencia;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Isac
 */
public class AgenciaBusiness {
    
   private final List<Agencia> agencias = new ArrayList<Agencia>();//vetor agencias
   private static AgenciaBusiness agenciaBusiness; //atributo statico
   
   /*
   for(Iterator i = agencias.iterator(); hastNext();) {
       Agencia a = i.next();
   }
   */
   
   
   private AgenciaBusiness(){ //contrutor singleton
       Agencia newAgencia;
       for(int i = 0; i < 5; i++){
           newAgencia = new Agencia();
           newAgencia.setCodigo(i+1);
           newAgencia.setNome("teste " + i);
           newAgencia.setCnpj("12345" + i);
           newAgencia.setEndereco(i+1 + " de Julho");
           newAgencia.setAtiva(true);
           agencias.add(newAgencia);
       }
   }
   
    public static AgenciaBusiness getInstance(){
        if(agenciaBusiness == null){
            agenciaBusiness = new AgenciaBusiness();
        }
        return agenciaBusiness;
    }
    
    public void cadastrarAgencia(Agencia agencia){
        this.agencias.add(agencia);
    }
    
    public Agencia consultarAgencia(int codigo){
        Agencia agencia;
        for(int i = 0; i < agencias.size(); i++){
            agencia = agencias.get(i);
            if(agencia.getCodigo() == codigo) {
                return agencia;
            }
        }
        return null;
    }
    
    public boolean desativaAgencia(int codigo) {
        Agencia agencia;
        for(int i = 0; i < agencias.size(); i++){
            agencia = agencias.get(i);
            if(agencia.getCodigo() == codigo){
               agencia.setAtiva(false);
               return true;
            }
        }
        return false;
    }
    
    public boolean reativaAgencia(int codigo){
        Agencia agencia = consultarAgencia(codigo);//retorna codigo da agencia ou nulo
        
        if(agencia != null){
            agencia.setAtiva(true);
            return true;
        }
        return false;
    }
}
